/*
 * AdminSonido.cpp
 *
 *  Created on: Nov 17, 2012
 *      Author: Hernan
 */

#include "SoundManager.h"

SoundManager::SoundManager() {
	if( SDL_Init(SDL_INIT_AUDIO) < 0 ) exit(1);
	Mix_OpenAudio(22050,AUDIO_S16SYS,2,640);

}


void SoundManager::agregarSonido(string identificador, string pathSonido){
	Mix_Chunk* sonido= Mix_LoadWAV(pathSonido.c_str());
	pair<string, Mix_Chunk*> par(identificador, sonido);
	this->sonidos.insert(par);
}


void SoundManager::agregarMusica(string identificador, string pathMusica){
	Mix_Music* musica= Mix_LoadMUS(pathMusica.c_str());
	pair<string, Mix_Music*> par(identificador, musica);
	this->musica.insert(par);
}


void SoundManager::reproducirMusicaVeces(string nombreMusica, int veces){

	map<string, Mix_Music*>::iterator it= this->musica.find(nombreMusica);
	this->temaActual= it->second;
	Mix_PlayMusic(temaActual,veces);

}

void SoundManager::reproducirMusica(string nombreMusica){

	this->reproducirMusicaVeces(nombreMusica,-1);
}




void SoundManager::reproducirSonido(string sonido){

	map<string, Mix_Chunk*>::iterator it= this->sonidos.find(sonido);

	Mix_Chunk* sonidini= it->second;

	Mix_PlayChannel(-1,sonidini,0);

}

void SoundManager::pararMusica(string nombreMusica){

	 Mix_HaltMusic();

}


SoundManager::~SoundManager() {

	map<string, Mix_Chunk*>::iterator it= this->sonidos.begin();
		while(it!= sonidos.end()){
			Mix_FreeChunk(it->second);
			it++;
		}

	map<string, Mix_Music*>::iterator it2= this->musica.begin();
		while(it2!= musica.end()){
			Mix_FreeMusic(it2->second);
			it2++;
		}

}

